package com.ctshk.rpc.season.service;

import com.ctshk.rpc.season.dto.PackageProductCostDTO;
import com.ctshk.rpc.season.dto.SeasonFixedProductPackageHotelDTO;
import com.ctshk.rpc.season.req.SeasonFixedProductPackageHotelReq;
import com.ctshk.rpc.season.req.UpdatePackageProductReq;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * <p>
 * 套票-固定套票单项产品打包-酒店表 服务类
 * </p>
 *
 * @author 杨林
 * @since 2021-03-09
 */
public interface ISeasonFixedProductPackageHotelService {
    /* @MethodName: 获取酒店产品价格
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/26 16:47
     **/
    PackageProductCostDTO getHotelProductPrice(Long productId, LocalDate departDate, LocalDate arrDate, Long userId, Integer channelType);

    /* @MethodName: 固定套票默认酒店的价格
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/19 13:32
     **/
    BigDecimal getDefaultHotelPrice(Long packageId, LocalDate departDate, LocalDate arrDate, Long userId, Integer channelType);

    List<SeasonFixedProductPackageHotelDTO> getHotelByPackageId(Long packageId,LocalDate departDate, LocalDate arrDate, Long userId, Integer channelType);
    List<SeasonFixedProductPackageHotelDTO> getDefaultHotelData(Long packageId,LocalDate departDate, LocalDate arrDate, Long userId, Integer channelType);




    /* @MethodName: 批量保存酒店产品 信息
     * @Description: TODO
     * @Param: userId 用户id  productId产品id packageId 打包id
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/9 18:18
     **/
    void batchHotelProduct(Long userId, Long packageId, List<SeasonFixedProductPackageHotelReq> hotelReqList);

    /* @MethodName: 获取固定套票 酒店产品信息
     * @Description: TODO
     * @Param: fixedSeasonId 固定套票id   packageId 产品打包id
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/11 13:32
     **/
    List<SeasonFixedProductPackageHotelDTO> getSeasonFixedProductHotelDtoList(Long packageId);

    /* @MethodName: 删除原来的酒店票产品
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/12 16:26
     **/
    void deletePreviousHotel(Long id, Long packageId);




    /* @MethodName: 获取 酒店差价信息
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/23 9:59
     **/
    List<SeasonFixedProductPackageHotelDTO> getHotelDifferencePrice(UpdatePackageProductReq req);
}
